import { Controller, Get, Request, Query, Post, Body, Param, Headers, HttpCode } from '@nestjs/common';
import { UserService } from './user.service';
import { ListService } from '../list/list.service';

// 知识点:
// 1、接口版本控制
// 2、装饰器获取参数

@Controller({
  path: 'user',
  version: '1',
})
export class UserController {
  constructor(
    private readonly user: UserService,
    // 这里在使用全局模块
    private readonly listService: ListService,
  ) { }
  // 获取get请求参数
  @Get('getpath1')
  getUserList(@Request() req) {
    console.log('@Request:', req.query);
    return {
      name: 'getpath1',
      getQuery: req.query
    }
  }

  @Get('getpath2')
  getUserList2(@Query() query) {
    console.log('@Query:', query);
    return {
      name: 'getpath2',
      getQuery: query
    }
  }

  @Get('getpath3')
  getUserList3(@Query('name') name) {
    console.log('@Query2:', name);
    return {
      name: 'getpath3',
      getQuery: name
    }
  }
  // 获取post请求参数
  @Post('postPath1')
  postPath1(@Request() query) {
    console.log('@Request-post:', query.body);
    return {
      name: 'postPath1',
      getQuery: query.body
    }
  }

  @Post('postPath2')
  postPath2(@Body() body) {
    console.log('@Request-post:', body);
    return {
      name: 'postPath2',
      getQuery: body
    }
  }

  @Post('postPath3')
  postPath3(@Body('age') age) {
    console.log('@Request-post:', age);
    return {
      name: 'postPath3',
      getQuery: age
    }
  }

  // 获取动态路由参数
  // @Get(':id')
  // dynamic(@Request() req) {
  //   console.log('@Request-post:', req.params);
  //   return {
  //     name: 'dynamic',
  //     getQuery: req.params
  //   }
  // }

  // @Get(':id')
  // dynamic2(@Param('id') id) {
  //   console.log('@Request-post:', id);
  //   return {
  //     name: 'dynamic2',
  //     getQuery: id
  //   }
  // }

  @Get('dynamic3/:id')
  dynamic3(@Param() param) {
    console.log('@Request-post:', param);
    return {
      name: 'dynamic3',
      getQuery: param
    }
  }

  // 读取header 信息
  @Get('header')
  header(@Headers() header) {
    console.log('@Request-post:', header.host);
    return {
      name: 'header',
      getQuery: header
    }
  }

  @Post('header')
  header2(@Headers() header) {
    console.log('@Request-post:', header.host);
    return {
      name: 'header2',
      getQuery: header
    }
  }

  // 设置状态吗码
  @Post('code')
  @HttpCode(305)
  code() {
    return {
      name: 'code',
      getQuery: 305
    }
  }


  // 全局模块的使用
  @Post('globalModule')
  globalModule(@Request() query) {
    return this.listService.findAll() + query.body.username;
  }

}
